package com.lw.common.utils;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.springframework.http.HttpStatus;

/**
 * 返回消息封装
 *  by lw on 2024年8月3日 15:05:34
 *  优化时间: 2025年5月13日 08:31:59
 *  优化人: lw
 */

@Getter
@Setter
@Data
@Schema(hidden = true)
public class ResultVo<T> {
    private Integer code;
    private String message;
    private T data;

    public static <T> ResultVo<T> success(String message, T data) {
        ResultVo<T> tResultVo = new ResultVo<>();
        tResultVo.setCode(HttpStatus.OK.value());
        tResultVo.setMessage(message);
        tResultVo.setData(data);
        return tResultVo;
    }

    public static <T> ResultVo<T> success() {
        return success("ok", null);
    }

    public static <T> ResultVo<T> success(T data) {
        return success("ok", data);
    }

    public static <T> ResultVo<T> error(Integer code, String message) {
        ResultVo<T> tResultVo = new ResultVo<>();
        tResultVo.setCode(HttpStatus.BAD_REQUEST.value());
        tResultVo.setMessage(message);
        tResultVo.setData(null);
        return tResultVo;
    }

    public static <T> ResultVo<T> error() {
        return error(HttpStatus.BAD_REQUEST.value(), "error");
    }

    public static <T> ResultVo<T> error(String message) {
        return error(HttpStatus.BAD_REQUEST.value(), message);
    }
}

